load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_library", "skia_cc_test", "supports_platforms")
load("//tools/testrunners/gm:android_gm_test.bzl", "android_gm_test")
load(":png_codec.bzl", "png_codec_tests")

licenses(["notice"])

exports_files_legacy()

filegroup(
    name = "gm_subset",
    srcs = [
        "bitmaprect.cpp",
        "colrv1.cpp",
        "fontations.cpp",
        "palette.cpp",
    ],
    visibility = ["//tools/viewer:__pkg__"],
)

skia_cc_library(
    name = "gm",
    testonly = True,
    srcs = [
        "gm.cpp",
    ],
    hdrs = ["gm.h"],
    visibility = [
        "//tools/testrunners/gm:__subpackages__",
        "//tools/viewer:__pkg__",
    ],
    deps = [
        "//:core",
        "//tools:registry",
        "//tools:tool_utils",
        "//tools/fonts:font_tool_utils",
    ],
)

CPU_GMS = [
    # This is an incomplete list of GMs that only require a CPU.
    # TODO(lovisolo): Complete this list.
    "3d.cpp",
    "aaa.cpp",
    "aaclip.cpp",
    "aarectmodes.cpp",
    "aaxfermodes.cpp",
    "addarc.cpp",
    "all_bitmap_configs.cpp",
    "alphagradients.cpp",
    "alpha_image.cpp",
    "analytic_gradients.cpp",
    "androidblendmodes.cpp",
    # "animated_gif.cpp", # needs a dep on SkResources
    "animatedimageblurs.cpp",
    # "animated_image_orientation.cpp", # Requires //include/android/SkAnimatedImage.h
    # "annotated_text.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
    "arcofzorro.cpp",
    "arcto.cpp",
    "arithmode.cpp",

    # TODO(lovisolo): Are these CPU-only, GPU-only or something else? Try them and add them to the
    #                 corresponding list.
    # "b_119394958.cpp",
    # "backdrop.cpp",
    # "backdrop_imagefilter_croprect.cpp",
    # "badpaint.cpp",
    # "batchedconvexpaths.cpp",
    # "bc1_transparency.cpp",
    # "beziereffects.cpp",
    # "beziers.cpp",
    # "bicubic.cpp",
    # "bigblurs.cpp",
    # "bigmatrix.cpp",
    # "bigrect.cpp",
    # "bigrrectaaeffect.cpp",
    # "bigtext.cpp",
    # "bigtileimagefilter.cpp",
    # "bitmapcopy.cpp",
    # "bitmapfilters.cpp",
    # "bitmapimage.cpp",
    # "bitmappremul.cpp",
    # "bitmaprect.cpp",
    # "bitmaprecttest.cpp",
    # "bitmapshader.cpp",
    # "bitmaptiled.cpp",
    # "bleed.cpp",
    # "blend.cpp",
    # "blurcircles2.cpp",
    # "blurcircles.cpp",
    # "blurignorexform.cpp",
    # "blurimagevmask.cpp",
    # "blurpositioning.cpp",
    # "blurquickreject.cpp",
    # "blurrect.cpp",
    # "blurredclippedcircle.cpp",
    # "blurroundrect.cpp",
    # "blurs.cpp",
    # "blurtextsmallradii.cpp",
    # "bmpfilterqualityrepeat.cpp",
    # "bug12866.cpp",
    # "bug5252.cpp",
    # "bug530095.cpp",
    # "bug615686.cpp",
    # "bug6643.cpp",
    # "bug6783.cpp",
    # "bug9331.cpp",
    # "circle_sizes.cpp",
    # "circulararcs.cpp",
    # "circularclips.cpp",
    # "clear_swizzle.cpp",
    # "clipdrawdraw.cpp",
    # "clip_error.cpp",
    # "clippedbitmapshaders.cpp",
    # "clipshader.cpp",
    # "clip_sierpinski_region.cpp",
    # "clip_strokerect.cpp",
    # "clockwise.cpp",
    # "collapsepaths.cpp",
    # "color4f.cpp",
    # "coloremoji_blendmodes.cpp",
    # "coloremoji.cpp",
    # "colorfilteralpha8.cpp",
    # "colorfilterimagefilter.cpp",
    # "colorfilters.cpp",
    # "colormatrix.cpp",
    # "colorspace.cpp",
    # "colorwheel.cpp",
    # "colrv1.cpp",
    # "complexclip2.cpp",
    # "complexclip3.cpp",
    # "complexclip4.cpp",
    # "complexclip_blur_tiled.cpp",
    # "complexclip.cpp",
    # "composecolorfilter.cpp",
    # "composeshader.cpp",
    # "compositor_quads.cpp",
    # "compressed_textures.cpp",
    # "concavepaths.cpp",
    # "conicpaths.cpp",
    # "constcolorprocessor.cpp",
    # "convex_all_line_paths.cpp",
    # "convexpaths.cpp",
    # "convexpolyclip.cpp",
    # "convexpolyeffect.cpp",
    # "coordclampshader.cpp",
    # "copy_to_4444.cpp",
    # "crbug_1041204.cpp",
    # "crbug_1073670.cpp",
    # "crbug_1086705.cpp",
    # "crbug_1113794.cpp",
    # "crbug_1139750.cpp",
    # "crbug_1156804.cpp",
    # "crbug_1162942.cpp",
    # "crbug_1167277.cpp",
    # "crbug_1174186.cpp",
    # "crbug_1174354.cpp",
    # "crbug_1177833.cpp",
    # "crbug_1257515.cpp",
    # "crbug_1313579.cpp",
    # "crbug_224618.cpp",
    # "crbug_691386.cpp",
    # "crbug_788500.cpp",
    # "crbug_847759.cpp",
    # "crbug_884166.cpp",
    # "crbug_887103.cpp",
    # "crbug_892988.cpp",
    # "crbug_899512.cpp",
    # "crbug_905548.cpp",
    # "crbug_908646.cpp",
    # "crbug_913349.cpp",
    # "crbug_918512.cpp",
    # "crbug_938592.cpp",
    # "crbug_946965.cpp",
    # "crbug_947055.cpp",
    # "crbug_996140.cpp",
    # "crop_imagefilter.cpp",
    # "croppedrects.cpp",
    # "crosscontextimage.cpp",
    # "cubicpaths.cpp",
    # "daa.cpp",
    # "dashcircle.cpp",
    # "dashcubics.cpp",
    # "dashing.cpp",
    # "degeneratesegments.cpp",
    # "destcolor.cpp",
    # "dftext_blob_persp.cpp",
    # "dftext.cpp",
    # "discard.cpp",
    # "displacement.cpp",
    # "distantclip.cpp",
    # "drawable.cpp",
    # "drawatlascolor.cpp",
    # "drawatlas.cpp",
    # "drawbitmaprect.cpp",
    # "draw_bitmap_rect_skbug4374.cpp",
    # "drawglyphs.cpp",
    # "drawimageset.cpp",
    # "drawlines_with_local_matrix.cpp",
    # "drawminibitmaprect.cpp",
    # "drawquadset.cpp",
    # "drawregion.cpp",
    # "drawregionmodes.cpp",
    # "dropshadowimagefilter.cpp",
    # "drrect.cpp",
    # "drrect_small_inner.cpp",
    # "dstreadshuffle.cpp",
    # "ducky_yuv_blend.cpp",
    # "emboss.cpp",
    # "emptypath.cpp",
    # "encode_alpha_jpeg.cpp",
    # "encode_color_types.cpp",
    # "encode.cpp",
    # "encode_platform.cpp",
    # "encode_srgb.cpp",
    # "exoticformats.cpp",
    # "fadefilter.cpp",
    # "fatpathfill.cpp",
    # "fiddle.cpp",
    # "fillrect_gradient.cpp",
    # "filltypes.cpp",
    # "filltypespersp.cpp",
    # "filterbug.cpp",
    # "filterfastbounds.cpp",
    # "filterindiabox.cpp",
    # "flippity.cpp",
    # "fontations.cpp",
    # "fontcache.cpp",
    # "fontmgr.cpp",
    # "fontregen.cpp",
    # "fontscaler.cpp",
    # "fontscalerdistortable.cpp",
    # "fpcoordinateoverride.cpp",
    # "fp_sample_chaining.cpp",
    # "fwidth_squircle.cpp",
    # "gammatext.cpp",
    # "getpostextpath.cpp",
    # "giantbitmap.cpp",
    # "glyph_pos.cpp",
    # "gpu_blur_utils.cpp",
    # "gradient_dirty_laundry.cpp",
    # "gradient_matrix.cpp",
    # "gradients_2pt_conical.cpp",
    # "gradients.cpp",
    # "gradients_degenerate.cpp",
    # "gradients_no_texture.cpp",
    # "gradtext.cpp",
    # "graphite_replay.cpp",
    # "graphitestart.cpp",
    # "grayscalejpg.cpp",
    # "hairlines.cpp",
    # "hairmodes.cpp",
    # "hardstop_gradients.cpp",
    # "hardstop_gradients_many.cpp",
    # "highcontrastfilter.cpp",
    # "hittestpath.cpp",
    # "hsl.cpp",
    # "hugepath.cpp",
    # "imageblur2.cpp",
    # "imageblurclampmode.cpp",
    # "imageblur.cpp",
    # "imageblurrepeatmode.cpp",
    # "imageblurtiled.cpp",
    # "image.cpp",
    # "imagefiltersbase.cpp",
    # "imagefiltersclipped.cpp",
    # "imagefilters.cpp",
    # "imagefilterscropexpand.cpp",
    # "imagefilterscropped.cpp",
    # "imagefiltersgraph.cpp",
    # "imagefiltersscaled.cpp",
    # "imagefiltersstroked.cpp",
    # "imagefilterstransformed.cpp",
    # "imagefiltersunpremul.cpp",
    # "imagefromyuvtextures.cpp",
    # "imagemagnifier.cpp",
    # "imagemakewithfilter.cpp",
    # "imagemasksubset.cpp",
    # "image_pict.cpp",
    # "imageresizetiled.cpp",
    # "image_shader.cpp",
    # "imagesource2.cpp",
    # "imagesource.cpp",
    # "internal_links.cpp",
    # "inverseclip.cpp",
    # "inversepaths.cpp",
    # "jpg_color_cube.cpp",
    # "kawase_blur_rt.cpp",
    # "labyrinth.cpp",
    # "largeclippedpath.cpp",
    # "largeglyphblur.cpp",
    # "lattice.cpp",
    # "lazytiling.cpp",
    # "lcdblendmodes.cpp",
    # "lcdoverlap.cpp",
    # "lcdtext.cpp",
    # "lighting.cpp",
    # "linepaths.cpp",
    # "localmatriximagefilter.cpp",
    # "localmatriximageshader.cpp",
    # "localmatrixshader.cpp",
    # "lumafilter.cpp",
    # "mac_aa_explorer.cpp",
    # "makecolorspace.cpp",
    # "make_raster_image.cpp",
    # "mandoline.cpp",
    # "manypathatlases.cpp",
    # "manypaths.cpp",
    # "matrixconvolution.cpp",
    # "matriximagefilter.cpp",
    # "mesh.cpp",
    # "mipmap.cpp",
    # "mirrortile.cpp",
    # "mixedtextblobs.cpp",
    # "mixercolorfilter.cpp",
    # "modecolorfilters.cpp",
    # "morphology.cpp",
    # "nearesthalfpixelimage.cpp",
    # "nested.cpp",
    # "ninepatchstretch.cpp",
    # "nonclosedpaths.cpp",
    # "offsetimagefilter.cpp",
    # "orientation.cpp",
    # "ovals.cpp",
    # "overdrawcanvas.cpp",
    # "overdrawcolorfilter.cpp",
    # "overstroke.cpp",
    # "p3.cpp",
    # "palette.cpp",
    # "patch.cpp",
    # "patharcto.cpp",
    # "pathcontourstart.cpp",
    # "patheffects.cpp",
    # "pathfill.cpp",
    # "pathinterior.cpp",
    # "pathmaskcache.cpp",
    # "pathmeasure.cpp",
    # "pathopsinverse.cpp",
    # "pathreverse.cpp",
    # "path_stroke_with_zero_length.cpp",
    # "pdf_never_embed.cpp",
    # "perlinnoise.cpp",
    # "perspimages.cpp",
    # "perspshaders.cpp",
    # "persptext.cpp",
    # "picture.cpp",
    # "pictureimagefilter.cpp",
    # "pictureimagegenerator.cpp",
    # "pictureshadercache.cpp",
    # "pictureshader.cpp",
    # "pictureshadertile.cpp",
    # "plus.cpp",
    # "points.cpp",
    # "poly2poly.cpp",
    # "polygonoffset.cpp",
    # "polygons.cpp",
    # "postercircle.cpp",
    # "preservefillrule.cpp",
    # "quadpaths.cpp",
    # "radial_gradient_precision.cpp",
    # "rasterhandleallocator.cpp",
    # "readpixels.cpp",
    # "recordopts.cpp",
    # "rectangletexture.cpp",
    # "repeated_bitmap.cpp",
    # "resizeimagefilter.cpp",
    # "rippleshadergm.cpp",
    # "roundrects.cpp",
    # "rrectclipdrawpaint.cpp",
    # "rrect.cpp",
    # "rrects.cpp",
    # "rsxtext.cpp",
    # "runtimecolorfilter.cpp",
    # "runtimefunctions.cpp",
    # "runtimeimagefilter.cpp",
    # "runtimeintrinsics.cpp",
    # "runtimeshader.cpp",
    # "samplerstress.cpp",
    # "savelayer.cpp",
    # "scaledemoji.cpp",
    # "scaledemoji_rendering.cpp",
    # "scaledrects.cpp",
    # "scaledstrokes.cpp",
    # "shadermaskfilter.cpp",
    # "shaderpath.cpp",
    # "shadertext3.cpp",
    # "shadowutils.cpp",
    # "shallowgradient.cpp",
    # "shapes.cpp",
    # "sharedcorners.cpp",
    # "showmiplevels.cpp",
    # "simpleaaclip.cpp",
    # "simplerect.cpp",
    # "skbug_12212.cpp",
    # "skbug1719.cpp",
    # "skbug_257.cpp",
    # "skbug_4868.cpp",
    # "skbug_5321.cpp",
    # "skbug_8664.cpp",
    # "skbug_8955.cpp",
    # "skbug_9319.cpp",
    # "skbug_9819.cpp",
    # "slug.cpp",
    # "smallarc.cpp",
    # "smallpaths.cpp",
    # "spritebitmap.cpp",
    # "srcmode.cpp",
    # "srgb.cpp",
    # "stlouisarch.cpp",
    # "stringart.cpp",
    # "strokedlines.cpp",
    # "strokefill.cpp",
    # "strokerect_anisotropic.cpp",
    # "strokerect.cpp",
    # "strokerects.cpp",
    # "stroke_rect_shader.cpp",
    # "strokes.cpp",
    # "stroketext.cpp",
    # "subsetshader.cpp",
    # "surface.cpp",
    # "swizzle.cpp",
    # "tablecolorfilter.cpp",
    # "tallstretchedbitmaps.cpp",
    # "testgradient.cpp",
    # "texelsubset.cpp",
    # "textblobblockreordering.cpp",
    # "textblobcolortrans.cpp",
    # "textblob.cpp",
    # "textblobgeometrychange.cpp",
    # "textblobmixedsizes.cpp",
    # "textblobrandomfont.cpp",
    # "textblobshader.cpp",
    # "textblobtransforms.cpp",
    # "textblobuseaftergpufree.cpp",
    # "texteffects.cpp",
    # "text_scale_skew.cpp",
    # "thinconcavepaths.cpp",
    # "thinrects.cpp",
    # "thinstrokedrects.cpp",
    # "tiledscaledbitmap.cpp",
    # "tileimagefilter.cpp",
    # "tilemodes_alpha.cpp",
    # "tilemodes.cpp",
    # "tilemodes_scaled.cpp",
    # "tinybitmap.cpp",
    # "transparency.cpp",
    # "trickycubicstrokes.cpp",
    # "typeface.cpp",
    # "unpremul.cpp",
    # "userfont.cpp",
    # "variedtext.cpp",
    # "verifiers",
    # "vertices.cpp",
    # "verylargebitmap.cpp",
    # "video_decoder.cpp",
    # "wacky_yuv_formats.cpp",
    # "widebuttcaps.cpp",
    # "windowrectangles.cpp",
    # "workingspace.cpp",
    # "xfermodeimagefilter.cpp",
    # "xfermodes2.cpp",
    # "xfermodes3.cpp",
    # "xfermodes.cpp",
    # "ycbcrimage.cpp",
    # "yuv420_odd_dim.cpp",
    # "yuvtorgbsubset.cpp",
]

GPU_GMS = [
    # TODO(lovisolo): Incomplete list. Some commented out files in CPU_GMS probably belong here.
    # "aarecteffect.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
    "anisotropic.cpp",
    # "asyncrescaleandread.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
    # "attributes.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
    # "beziereffects.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
    # "clockwise.cpp",  # ./include/core/SkRefCnt.h:41: fatal error: "assert(this->getRefCnt() == 1)"
]

COMMON_DEPS = [
    "//:core",
    "//gm",
    "//src/core:core_priv",
    "//tools:codec_utils",
    "//tools:hash_and_encode",
    "//tools:tool_utils",
    "//tools/testrunners/common:testrunner",
    "//tools/testrunners/common/compilation_mode_keys",
]

# Sample invocation:
#
#     $ bazel run --config=linux_rbe //gm:cpu_8888_test
#
# Then inspect the PNG and JSON files produced by the GMs:
#
#     $ unzip -l bazel-testlogs/gm/cpu_8888_test/test.outputs/outputs.zip
skia_cc_test(
    name = "cpu_8888_test",
    srcs = CPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "8888",
    ],
    data = ["//resources"],
    target_compatible_with = supports_platforms(
        "@platforms//os:linux",
        "@platforms//os:windows",
        "@platforms//os:macos",
    ),
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:raster",
        "//tools/testrunners/gm/vias:simple_vias",
        "//tools/timer",  # Required by addarc.cpp and animatedimageblurs.cpp.
    ],
)

skia_cc_test(
    name = "cpu_8888_via_picture_serialization_test",
    srcs = CPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "8888",
        "--via",
        "picture_serialization",
        # These tests fail with "Recorded and reference bitmap pixels do not match."
        "--skip",
        "analytic_antialias_convex",
        "arithmode",
        "arithmode_blender",
    ],
    data = ["//resources"],
    target_compatible_with = supports_platforms(
        "@platforms//os:linux",
        "@platforms//os:windows",
        "@platforms//os:macos",
    ),
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:raster",
        "//tools/testrunners/gm/vias:simple_vias",
        "//tools/timer",  # Required by addarc.cpp and animatedimageblurs.cpp.
    ],
)

skia_cc_test(
    name = "cpu_8888_via_picture_test",
    srcs = CPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "8888",
        "--via",
        "picture",
    ],
    data = ["//resources"],
    target_compatible_with = supports_platforms(
        "@platforms//os:linux",
        "@platforms//os:windows",
        "@platforms//os:macos",
    ),
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:raster",
        "//tools/testrunners/gm/vias:simple_vias",
        "//tools/timer",  # Required by addarc.cpp and animatedimageblurs.cpp.
    ],
)

png_codec_tests(name = "png_codec_tests")

test_suite(
    name = "cpu_gm_tests",
    tests = [
        "cpu_8888_test",
        "cpu_8888_via_picture_serialization_test",
        "cpu_8888_via_picture_test",
        ":png_codec_tests",
    ],
)

skia_cc_test(
    name = "ganesh_gles_test",
    srcs = GPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "gles",
    ],
    data = ["//resources"],
    target_compatible_with = supports_platforms(
        "@platforms//os:linux",
        "@platforms//os:windows",
        "@platforms//os:macos",
    ),
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:ganesh_gl",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

# Vulkan GMs.
[
    skia_cc_test(
        name = name,
        srcs = GPU_GMS + [
            "//tools/testrunners/gm:BazelGMTestRunner.cpp",
        ],
        args = [
            "--surfaceConfig",
            surfaceConfig,
        ],
        data = ["//resources"],
        target_compatible_with = supports_platforms(
            "@platforms//os:linux",
            "@platforms//os:windows",
            "@platforms//os:macos",
        ),
        deps = COMMON_DEPS + [
            "//tools/testrunners/common/surface_manager:ganesh_vulkan",
            "//tools/testrunners/gm/vias:simple_vias",
        ],
    )
    for name, surfaceConfig in [
        [
            "ganesh_vk_test",
            "vk",
        ],
        [
            "ganesh_vk_1010102_test",
            "vk_1010102",
        ],
        [
            "ganesh_vk_msaa4_test",
            "vk_msaa4",
        ],
        [
            "ganesh_vk_msaa8_test",
            "vk_msaa8",
        ],
        [
            "ganesh_vk_dmsaa_test",
            "vk_dmsaa",
        ],
        [
            "ganesh_vk_betex_test",
            "vk_betex",
        ],
        [
            "ganesh_vk_bert_test",
            "vk_bert",
        ],
    ]
]

skia_cc_test(
    name = "hello_bazel_world_test",
    srcs = [
        "hello_bazel_world.cpp",
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "8888",
    ],
    data = ["//resources"],
    target_compatible_with = supports_platforms(
        "@platforms//os:linux",
        "@platforms//os:windows",
        "@platforms//os:macos",
    ),
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:raster",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

android_gm_test(
    name = "hello_bazel_world_android_test",
    srcs = [
        "hello_bazel_world.cpp",
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "8888",
    ],
    requires_resources_dir = True,
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:raster",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

[
    # Sample invocation (assuming there's a Pixel 5 or similar device available via adb):
    #
    #     $ bazel test --config=android_rbe --config=Pixel5 //gm:cpu_8888_android_test
    #
    # Then inspect the PNG and JSON files produced by the GMs:
    #
    #     $ unzip -l bazel-testlogs/gm/cpu_8888_android_test/test.outputs/outputs.zip
    android_gm_test(
        name = "cpu_%s_android_test" % surface_config,
        srcs = CPU_GMS + [
            "//tools/testrunners/gm:BazelGMTestRunner.cpp",
        ],
        args = [
            "--surfaceConfig",
            "8888",
        ],
        requires_resources_dir = True,
        deps = COMMON_DEPS + [
            "//tools/testrunners/common/surface_manager:raster",
            "//tools/testrunners/gm/vias:simple_vias",
            "//tools/timer",  # Required by addarc.cpp and animatedimageblurs.cpp.
        ],
    )
    for surface_config in [
        "8888",
        "565",
    ]
]

android_gm_test(
    name = "ganesh_gles_android_test",
    srcs = GPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "gles",
    ],
    requires_resources_dir = True,
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:ganesh_gl",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

android_gm_test(
    name = "ganesh_gles_via_picture_serialization_android_test",
    srcs = GPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "gles",
        "--via",
        "picture_serialization",
        "--skip",
        "anisomips",  # Fails with "Recorded and reference bitmap pixels do not match".
    ],
    requires_resources_dir = True,
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:ganesh_gl",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

android_gm_test(
    name = "ganesh_gles_via_picture_android_test",
    srcs = GPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "gles",
        "--via",
        "picture",
        "--skip",
        "anisomips",  # Fails with "Recorded and reference bitmap pixels do not match".
    ],
    requires_resources_dir = True,
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:ganesh_gl",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)

android_gm_test(
    name = "ganesh_vk_android_test",
    srcs = GPU_GMS + [
        "//tools/testrunners/gm:BazelGMTestRunner.cpp",
    ],
    args = [
        "--surfaceConfig",
        "vk",
    ],
    requires_resources_dir = True,
    deps = COMMON_DEPS + [
        "//tools/testrunners/common/surface_manager:ganesh_vulkan",
        "//tools/testrunners/gm/vias:simple_vias",
    ],
)
